package com.rgs.module.login.service;

import com.rgs.module.login.entity.SysUserDO;
import com.rgs.module.login.filter.SysUserFilterDTO;

import java.util.List;
import java.util.Optional;

/**
 * @author Ren Gaoshuai
 * @ClassName SysUserService
 * @create 2021-12-24 10:24
 **/
public interface SysUserService {

    /*  以下为通用模板 ------------------------start */

    /**
     * 新增数据
     *
     * @param sysUser 实例对象
     * @return 实例对象
     */
    SysUserDO insert(SysUserDO sysUser);

    /**
     * 通过条件删除数据
     *
     * @param sysUserFilter 条件过滤器
     */
    void deleteByFilter(SysUserFilterDTO sysUserFilter);

    /**
     * 通过条件更新数据
     *
     * @param sysUser       实例对象
     * @param sysUserFilter 条件过滤器
     */
    void updateByFilter(SysUserDO sysUser, SysUserFilterDTO sysUserFilter);

    /**
     * 通过条件更新数据
     * 忽悠为空字段
     *
     * @param sysUser       实例对象
     * @param sysUserFilter 条件过滤器
     */
    void updateSelectiveByFilter(SysUserDO sysUser, SysUserFilterDTO sysUserFilter);

    /**
     * 通过条件查询数据
     *
     * @param sysUserFilter 条件过滤器
     * @return 实例数组
     */
    List<SysUserDO> listByFilter(SysUserFilterDTO sysUserFilter);

    /**
     * 通过条件查询一条数据
     *
     * @param sysUserFilter 条件过滤器
     * @return 实例
     */
    Optional<SysUserDO> selectByFilter(SysUserFilterDTO sysUserFilter);



    /*  以上为通用模板 ------------------------end */

    void update(SysUserDO sysUserDO);

}
